#ifndef IPC_CLIENT_H
#define IPC_CLIENT_H

#include <string>
#include <vector>
#include <thread>
#include <functional>
#include <sdbus-c++/sdbus-c++.h>

class IPCClient
{
  private:
    std::thread ClientThread;
    void ClientWork();
    std::unique_ptr<sdbus::IConnection> conn;
    std::unique_ptr<sdbus::IProxy> proxy;
  public:
    void Boot();
    virtual ~IPCClient();
    void StartShot(const std::string& uuid);
    void StopShot(const std::string& uuid);
    bool ShotStatus(const std::string& uuid);
    std::vector<std::string> GetAllDevices();
    std::function<void(std::string)> funcCameraOffline;
    std::function<void(std::string)> funcMessage;
};

#endif
